package com.zhentao.service;

import com.github.pagehelper.PageInfo;
import com.zhentao.admin.dto.StudentAddDto;
import com.zhentao.admin.dto.StudentSelDto;
import com.zhentao.admin.dto.UpdatePasswordDto;
import com.zhentao.admin.dto.UserJinYongDto;
import com.zhentao.admin.vo.StudentVo;
import com.zhentao.domain.SClass;
import com.zhentao.domain.SMarketingdepartment;
import com.zhentao.domain.TUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhentao.domain.TUserRole;
import com.zhentao.domain.dto.AdTeacher;
import com.zhentao.domain.dto.TeacherDto;
import com.zhentao.domain.dto.UpTeacher;
import com.zhentao.domain.excel.TeacherExport;
import com.zhentao.result.Result;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
* @author 86150
* @description 针对表【t_user】的数据库操作Service
* @createDate 2024-07-22 15:05:16
*/
public interface TUserService extends IService<TUser> {
    /**
     * 获取讲师列表
     * @param teacherDto
     * @return
     * */
    Result getTeacherList(TeacherDto teacherDto);

    /**
     * 分页查询学生信息，以及多条件查
     * @param studentSelDto
     * @return
     * */
    PageInfo<StudentVo> selectStudentLimit(StudentSelDto studentSelDto);

    /**
     * 获取当前登录的学生信息
     * @param uid
     * @return
     * */
    public Result findOneLoginUser(Integer uid);

    /**
     * 修改密码
     * @param updatePasswordDto
     * @return
     * */
    Result  updateLoginPassword(UpdatePasswordDto updatePasswordDto);

    /**
     * 添加讲师
     * @param adTeacher
     * @return
     * */
    Result addTeacher(AdTeacher adTeacher);

    /**
     * 修改讲师信息
     * @param upTeacher
     * @return
     * */
    Result updateTeacher(UpTeacher upTeacher);

    /**
     * 通过id获取讲师信息
     * @param uid
     * @return
     * */
    Result findOneTeacher(Integer uid);

    /**
     * 禁用启用讲师账号
     * @param uid
     * @return
     * */
    Result disableTeacher(Integer uid);

    /**
     * 删除讲师信息
     * @param uid
     * @return
     * */
    Result deleteTeacher(Integer uid);


    /**
     * 添加学生信息
     * @param studentAddDto
     * @return
     * */
    Result addStudent(StudentAddDto studentAddDto);

    /**
     * 删除学生信息
     * @param ids
     * @return
     * */
    Result delBatchStudent(Integer[] ids);

    /**
     * 修改学生信息
     * @param tUser
     * @return
     * */
    Result updateStudent(TUser tUser);

    /**
     * 重置讲师密码
     * @param uid
     * @return
     * */
    Result resetTeacherPassword(Integer uid);

    /**
     * 查询所有市场部信息
     * @return
     * */
    Result allMarket();

    /**
     * 查询所有班级信息
     * @return
     * */
    Result allClass();

    /**
     * 添加角色信息
     * @param userRole
     * @deprecated
     * */
    void saveRole(TUserRole userRole);

    /**
     * 导出学生信息
     * @param response
     * @deprecated
     * */
    void download(HttpServletResponse response) throws IOException;

    /**
     * 获取讲师列表导出
     * @return
     */
    List<TeacherExport> getTeacherListExport();

    /**
     * 禁用账号
     * @param userJinYongDto
     * @return
     * */
    Result disable(UserJinYongDto userJinYongDto);

    /**
     * 重置密码
     * @param userId
     * @return
     */
    Result resetPassword(Integer userId);

    /**
     * 获取市场部信息
     * @param s
     * @return
     */
    SMarketingdepartment getMarketAndSex(String s);

    /**
     * 获取班级信息
     * @param valueOf
     * @return
     */
    SClass getClassAndSex(String valueOf);
}
